/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.diplomka.servicelayer.gamelogic.manager;

import cz.fi.muni.diplomka.common.enumeration.ResourceType;

/**
 * Interface for manipulating with Resources in City
 *
 * @author Jakub Kutil
 */
public interface CityResourcesManager {

    /**
     * Lowers number of Resources in specified City
     *
     * @param cityId Id of specified City
     * @param resourceType Type of resource to lower
     * @param count number to lower Resources in City
     */
    public void lowerResource(Long cityId, ResourceType resourceType, int count);

    /**
     * Increases number of Resources in specified City
     *
     * @param cityId Id of specified City
     * @param resourceType Type of resource to lower
     * @param count number to increase Resources in City
     */
    public void increaseResource(Long cityId, ResourceType resourceType, int count);

    /**
     * Gets count of specified Resources in specified City
     *
     * @param cityId Id of specified City
     * @param resourceType Type of specified Resource
     * @return count of specified Resources in specified City
     */
    public int getResourceCount(Long cityId, ResourceType resourceType);

    /**
     * Gets maximal possible count of specified Resources in specified City
     *
     * @param cityId Id of specified City
     * @param resourceType Type of specified Resource
     * @return maximal possible count of specified Resources in specified City
     */
    public int getMaximumPossibleResourceCount(Long cityId, ResourceType resourceType);

    /**
     * Gets hour production of specified Resources in specified City
     *
     * @param cityId Id of specified City
     * @param resourceType Type of specified Resource
     * @return hour production of specified Resources in specified City
     */
    public int getResourceProductionCount(Long cityId, ResourceType resourceType);

    /**
     * Creates starting Resources for specified City based on limits
     *
     * @param cityId Id of specified City
     */
    public void createStartingResourcesForCity(Long cityId);
}
